home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / var / lib / python-support / python2.6 / gdata / tlslite / VerifierDB.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2009-04-20  |  4.0 KB  |  100 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. '''Class for storing SRP password verifiers.'''
  5. from utils.cryptomath import *
  6. from utils.compat import *
  7. import mathtls
  8. from BaseDB import BaseDB
  9.  
  10. class VerifierDB(BaseDB):
  11.     '''This class represent an in-memory or on-disk database of SRP
  12.     password verifiers.
  13.  
  14.     A VerifierDB can be passed to a server handshake to authenticate
  15.     a client based on one of the verifiers.
  16.  
  17.     This class is thread-safe.
  18.     '''
  19.     
  20.     def __init__(self, filename = None):
  21.         '''Create a new VerifierDB instance.
  22.  
  23.         @type filename: str
  24.         @param filename: Filename for an on-disk database, or None for
  25.         an in-memory database.  If the filename already exists, follow
  26.         this with a call to open().  To create a new on-disk database,
  27.         follow this with a call to create().
  28.         '''
  29.         BaseDB.__init__(self, filename, 'verifier')
  30.  
  31.     
  32.     def _getItem(self, username, valueStr):
  33.         (N, g, salt, verifier) = valueStr.split(' ')
  34.         N = base64ToNumber(N)
  35.         g = base64ToNumber(g)
  36.         salt = base64ToString(salt)
  37.         verifier = base64ToNumber(verifier)
  38.         return (N, g, salt, verifier)
  39.  
  40.     
  41.     def __setitem__(self, username, verifierEntry):
  42.         '''Add a verifier entry to the database.
  43.  
  44.         @type username: str
  45.         @param username: The username to associate the verifier with.
  46.         Must be less than 256 characters in length.  Must not already
  47.         be in the database.
  48.  
  49.         @type verifierEntry: tuple
  50.         @param verifierEntry: The verifier entry to add.  Use
  51.         L{tlslite.VerifierDB.VerifierDB.makeVerifier} to create a
  52.         verifier entry.
  53.         '''
  54.         BaseDB.__setitem__(self, username, verifierEntry)
  55.  
  56.     
  57.     def _setItem(self, username, value):
  58.         if len(username) >= 256:
  59.             raise ValueError('username too long')
  60.         len(username) >= 256
  61.         (N, g, salt, verifier) = value
  62.         N = numberToBase64(N)
  63.         g = numberToBase64(g)
  64.         salt = stringToBase64(salt)
  65.         verifier = numberToBase64(verifier)
  66.         valueStr = ' '.join((N, g, salt, verifier))
  67.         return valueStr
  68.  
  69.     
  70.     def _checkItem(self, value, username, param):
  71.         (N, g, salt, verifier) = value
  72.         x = mathtls.makeX(salt, username, param)
  73.         v = powMod(g, x, N)
  74.         return verifier == v
  75.  
  76.     
  77.     def makeVerifier(username, password, bits):
  78.         '''Create a verifier entry which can be stored in a VerifierDB.
  79.  
  80.         @type username: str
  81.         @param username: The username for this verifier.  Must be less
  82.         than 256 characters in length.
  83.  
  84.         @type password: str
  85.         @param password: The password for this verifier.
  86.  
  87.         @type bits: int
  88.         @param bits: This values specifies which SRP group parameters
  89.         to use.  It must be one of (1024, 1536, 2048, 3072, 4096, 6144,
  90.         8192).  Larger values are more secure but slower.  2048 is a
  91.         good compromise between safety and speed.
  92.  
  93.         @rtype: tuple
  94.         @return: A tuple which may be stored in a VerifierDB.
  95.         '''
  96.         return mathtls.makeVerifier(username, password, bits)
  97.  
  98.     makeVerifier = staticmethod(makeVerifier)
  99.  
  100.